package com.icangya.service;

import com.alibaba.fastjson.JSONObject;
import com.icangya.domain.*;

import java.sql.Timestamp;

public interface IMoneyService {

    /**
     * 初始化用户广告金表
     * @param balance
     */
   void saveBalance(Balance balance);

    /**
     * 初始化用户佣金表
     * @param commission
     */
   void saveCommission(Commission commission);

    /**
     * 初始化用户广告金表
     * @param giftAdvertMoney
     */
    void saveGiftAdvertMoney(GiftAdvertMoney giftAdvertMoney);
    /**
     * 查询用户余额
     *
     * @param openId
     * @return
     */

    Balance getUserBalanceByOpenId(String  openId);

    /**
     * 查询用户佣金
     *
     * @param openId
     * @return
     */

    Commission getUserCommissionyByOpenId(String  openId);

    //修改用户佣金
    int updateCommission(String openId,double money);

 /**
  * 添加获取佣金记录
  * @param commissionRecord
  */
 void saveCommissionRecord(CommissionRecord commissionRecord);
    /**
     * 获取用户所有的支出记录
     * @param openId
     * @return
     */
    JSONObject getExpendRecord(String openId);

    /**
     * 获取用户获得佣金的记录
     * @param openId
     * @return
     */
    JSONObject getCommRecord(String openId,int startPage);

    /**
     * 获取用户的提现记录
     * @param openId
     * @return
     */
    JSONObject getCashRecord(String openId);

 /**
  * 获取用户的提现记录  分页查询
  * @param openId
  * @return
  */
 JSONObject getCashRecord(String openId,int startPage);


 /**
  * 用户获得广告金支出记录
  * @param openId
  * @return
  */
 JSONObject getExpendRecordMoney(String openId,int startPage);

 /**
  * 用户获得广告金充值记录
  * @param openId
  * @return
  */
 JSONObject getRechargeRecordMoney(String openId,int startPage);

 /**
  * 用户最近一次的充值记录
  * @param openId
  * @return
  */
 Boolean getRechargeRecord(String openId);


 /**
  * 设置支付宝提现佣金,
  * @param aliPayCashRecord
  * @return
  */
 AliPayCashRecord saveAliPay(AliPayCashRecord aliPayCashRecord);

 /**
  *  获取所有待审核中的使用支付宝提现的用户
  * @param startPage
  * @return
  */
  JSONObject getAliPayAll(int startPage);

 /**
  *  提现通过审核
  * @param aliPayId
  * @return
  */
 Boolean setApprove(long aliPayId);

 /**
  * 审核失败，拒绝提现
  * @param aliPayId
  * @return
  */
 Boolean failureAudit(long aliPayId);

 /**
  * 每天充值总金额
  * @return
  */
 Double getRechargeMoneyNow(Timestamp time);

 Double getCashMoneyNow(Timestamp time);

 /**
  * 一个时间段内系统的收入
  * @param startTime
  * @param endTime
  * @return
  */
  GainRecord  getGainRecordTime(Timestamp startTime,Timestamp endTime);

  void saveGainRecord(GainRecord gainRecord);

  JSONObject getGainRecordAll(int startPage);
}
